"""
@Project ：python
@File    ：06-封装.py
@IDE     ：PyCharm
@Author  ：DongCha
@Date    ：2024/4/10 010 19:46
"""


# 面向对象：简单理解就是基于模板（类）去创建实体（对象），使用对象完成功能的开发
# 面向对象三大特性：封装，继承，多态

# 封装表示的是：将事务的属性、行为封装到类中，并描述为成员变量、成员方法


# 私有：无法被类对象直接调用
# 私有成员变量：变量名以 __ 开头（两个下划线）
# 私有成员方法：方法名以 __ 开头（两个下划线）
class Phone:
    price = None
    __current_voltage = 0.5

    def __keep_single_core(self):
        print("单核运行")

    def by_5g(self):
        if self.__current_voltage >= 1:
            print("5g通话开启")
        else:
            self.__keep_single_core()
            print("电量不足，设置为单核运行")


phone = Phone()
phone.price = 1000
# 类中其他成员可以访问私有成员
phone.by_5g()


# 类对象无法访问私有成员
# phone.__keep_single_core()
# print(phone.__current_voltage)

# 意义：
# 在类中提供仅供内部使用的属性和方法，不对外开放


# 设计一个手机类：
# 私有成员变量：__is_5g_enable，类型为 bool，True 表示开启，False 表示关闭
# 私有成员方法：__check_5g()，判断私有成员 __is_5g_enable 的值：
# True 输出：5g 开启
# False 输出：5g 关闭
# 公开成员方法：call_by_5g()，调用会执行：
# 调用私有成员方法，判断5g网络状态
# 输出：正在通话中
class PhoneTest:
    __is_5g_enable = False

    def __check_5g(self):
        if self.__is_5g_enable:
            print("5g 开启")
        else:
            print("5g 关闭")

    def call_by_5g(self):
        self.__check_5g()
        print("正在通话中。。。")


phone = PhoneTest()
phone.call_by_5g()
